package com.flong.gui;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;

/**
 * 设置单元格对齐方式
 * @Author:liangjilong
 * @Date:2015年11月19日-上午8:47:57
 * @Email:jilonglinag@sina.com
 * @Version:1.0
 * @Description:
 */
@SuppressWarnings("all")
public class JSwingTable extends JFrame {
	JTable table;
	JScrollPane pane;
	TableModel model;
	// 数据
	Object[][] data = { { "张三丰", "男", 103 }, { "周伯通", "男", 104 }, { "小龙女", "女", 80 } };
	// 列名
	Object[] clomnName = { "姓名", "性别", "年龄" };

	JSwingTable() {
		super("表格测试程序");
		init();
	}

	private void init() {
		// 初始化TableModel，使用数据data，列名clomnName
		model = new DefaultTableModel(data, clomnName) {// 设置表格中的数据不可以编辑
			public boolean isCellEditable(int r, int c) {
				return false;
			}
		};
		// 使用上面的model作为参数初始化JTabel
		table = new JTable(model);
		// 设置对齐
		setDuiqi(table);
		// 初始化JScrollPane
		pane = new JScrollPane();
		// 将table添加到JScrollPane上 这里使用下面的第一种方法不能添加
		// 使用第一个先获得JViewPort对象，然后再添加
		pane.getViewport().add(table);
		this.getContentPane().add(pane);
		setSize(400, 300);// 设置Frame的大小
		setResizable(true);// 设置窗口不可以调整大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出时关闭窗口
		setVisible(true);// 设置窗口显示出来
	}

	/***
	 * 设置JTable表格单元格对齐的效果
	 * @param table
	 */
	public void setDuiqi(JTable table) {
		// 对其方式设置
		DefaultTableCellRenderer d = new DefaultTableCellRenderer();

		// 设置表格单元格的对齐方式为居中对齐方式
		d.setHorizontalAlignment(JLabel.CENTER);
		for (int i = 0; i < table.getColumnCount(); i++) {
			TableColumn col = table.getColumn(table.getColumnName(i));
			col.setCellRenderer(d);
		}

	}

	public static void main(String[] args) {
		new JSwingTable();
	}
}
